package com.ys.nms.module.business.controller.admin.mempools.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 内存 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MempoolsRespVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7176")
    @ExcelProperty("ID")
    private Integer mempoolId;

    @Schema(description = "内存池在设备中的索引标识（如 SNMP 索引），用于区分同一设备的不同内存池。", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("内存池在设备中的索引标识（如 SNMP 索引），用于区分同一设备的不同内存池。")
    private String mempoolIndex;

    @Schema(description = "关联设备物理实体的 SNMP 索引（来自 ENTITY-MIB），用于定位具体硬件组件。")
    @ExcelProperty("关联设备物理实体的 SNMP 索引（来自 ENTITY-MIB），用于定位具体硬件组件。")
    private Integer entPhysicalIndex;

    @Schema(description = "内存池类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("内存池类型")
    private String mempoolType;

    @Schema(description = "内存池分类，用于逻辑分组，默认为系统级内存", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("内存池分类，用于逻辑分组，默认为系统级内存")
    private String mempoolClass;

    @Schema(description = "数据精度或单位倍数（例如：1 表示字节，1024 表示 KB），用于数值换算", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("数据精度或单位倍数（例如：1 表示字节，1024 表示 KB），用于数值换算")
    private Integer mempoolPrecision;

    @Schema(description = "内存池的描述信息，如 Physical RAM 或 Swap Space，便于识别。物理内存，虚拟内存等", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("内存池的描述信息，如 Physical RAM 或 Swap Space，便于识别。物理内存，虚拟内存等")
    private String mempoolDescr;

    @Schema(description = "设备ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8933")
    @ExcelProperty("设备ID")
    private Integer deviceId;

    @Schema(description = "当前内存使用百分比（整数形式，如 75 表示 75%）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("当前内存使用百分比（整数形式，如 75 表示 75%）")
    private Integer mempoolPerc;

    @Schema(description = "获取内存使用率的 SNMP OID 路径，用于动态采集数据", example = "2554")
    @ExcelProperty("获取内存使用率的 SNMP OID 路径，用于动态采集数据")
    private String mempoolPercOid;

    @Schema(description = "已使用的内存量（单位由 mempool_precision	 决定）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("已使用的内存量（单位由 mempool_precision	 决定）")
    private Long mempoolUsed;

    @Schema(description = "获取已使用内存值的 SNMP OID。", example = "16746")
    @ExcelProperty("获取已使用内存值的 SNMP OID。")
    private String mempoolUsedOid;

    @Schema(description = "空闲内存量。", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("空闲内存量。")
    private Long mempoolFree;

    @Schema(description = "获取空闲内存值的 SNMP OID。", example = "5513")
    @ExcelProperty("获取空闲内存值的 SNMP OID。")
    private String mempoolFreeOid;

    @Schema(description = "内存池总容量", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("内存池总容量")
    private Long mempoolTotal;

    @Schema(description = "获取总内存容量的 SNMP OID。", example = "1682")
    @ExcelProperty("获取总内存容量的 SNMP OID。")
    private String mempoolTotalOid;

    @Schema(description = "最大的连续空闲内存块大小，用于分析内存碎片情况")
    @ExcelProperty("最大的连续空闲内存块大小，用于分析内存碎片情况")
    private Long mempoolLargestfree;

    @Schema(description = "最小的空闲内存块大小（较少使用，可能为保留字段）。")
    @ExcelProperty("最小的空闲内存块大小（较少使用，可能为保留字段）。")
    private Long mempoolLowestfree;

    @Schema(description = "0	 表示正常，1	 表示已删除", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("0	 表示正常，1	 表示已删除")
    private Boolean mempoolDeleted;

    @Schema(description = "内存使用率的告警阈值")
    @ExcelProperty("内存使用率的告警阈值")
    private Integer mempoolPercWarn;

}
